home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 1
/
Merciful - Disc 1.iso
/
software
/
t
/
touch_stones
/
touchstones.dms
/
touchstones.adf
/
autoexec.AMOS
/
autoexec.amosSourceCode
next >
Wrap
AMOS Source Code
|
1990-08-11
|
7KB
|
304 lines
Break Off
Dim ARRAYA(12,8)
Dim ARRAYB(72)
Load "df0:Empty/Music"
Music 1
Load "df0:Samples.Abk"
Dim N(12,8)
BEGGIN: Screen Open 0,353,291,32,0
Screen Display 0,112,18,352,290
Flash Off
Hide On
Limit Mouse 112,18 To 464,308
Def Scroll 1,299,38 To 315,195,0,-1
'
'
Load Iff "df0:Lo-Res/TouchstonesTitle1"
LP7: If Mouse Key=0 Then Goto LP7
Load Iff "df0:Lo-Res/TouchstonesTitle2"
LP8: If Mouse Key=0 Then Goto LP8
'
BEGGIN2: Fade 2 : Wait 30
'
Screen Close 0
Screen Open 0,353,291,32,0 : Flash Off
Screen Display 0,112,320,352,290
Load Iff "df0:Lo-Res/TouchstonesOptions1"
For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
'
'
LBLLBL: A$=Inkey$ : If A$="" Then Goto LBLLBL
B$="1" : C$="6"
If A$<B$ Then Goto LBLLBL
If A$>C$ Then Goto LBLLBL
PMODE=Val(A$)
PLYER=1
If PMODE=2 or PMODE=4 or PMODE=6 Then COMPLAY=1 Else COMPLAY=0
If PMODE=2 Then PLYER=-1
Fade 3 : Wait 45
'
Screen Close 0
Screen Open 0,353,291,32,0 : Flash Off
Screen Display 0,112,320,352,290
Load Iff "df0:Lo-Res/TouchstonesOptions2"
For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
'
'
BENEK: K=Mouse Key
If K=1 Then Goto LD1
If K=2 Then Goto LD2
Goto BENEK
'
LD1: Fade 3 : Wait 45 : Screen Close 0
Screen Open 0,353,291,32,0 : Flash Off
Screen Display 0,112,320,352,290
Load Iff "df0:Lo-Res/TouchstonesBoard1"
Load "df0:Empty/Stones.abk" : Get Sprite Palette
For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
Goto LD3
'
'
LD2: Fade 3 : Wait 45 : Screen Close 0
Screen Open 0,353,291,32,0 : Flash Off
Screen Display 0,112,320,352,290
'
Load Iff "df0:Lo-Res/TouchstonesBoard2"
Def Scroll 2,1,1 To 352,290,1,0 : Scroll 2
Def Scroll 2,1,1 To 352,290,0,1 : Scroll 2
Def Scroll 1,298,39 To 316,195,0,-1
Colour Back 0
Load "df0:Empty/Stones2.abk"
Get Sprite Palette
For A=318 To 18 Step -5 : Screen Display 0,112,A,352,290 : Wait Vbl : Next A
'
LD3: For TY=63 To 0 Step -1 : Mvolume TY : Wait Vbl : Next TY
Music Off : Mvolume 63
'
Double Buffer
'
Hide On
'
Randomize Timer
For A=1 To 36
ARRAYB(A)=A
ARRAYB(36+A)=A
Next A
For Y=1 To 12
For U=1 To 8
ARRAYA(Y,U)=0
Next U
Next Y
For A=1 To 300
B=Rnd(71)+1
ABACK: C=Rnd(71)+1 : If C=B Then Goto ABACK
D=ARRAYB(B)
ARRAYB(B)=ARRAYB(C)
ARRAYB(C)=D
Next A
'
'Setting Up Board
ARRAYA(1,1)=ARRAYB(1) : Paste Bob 1*20+20,1*20+18,ARRAYB(1)
ARRAYA(12,1)=ARRAYB(2) : Paste Bob 12*20+20,38,ARRAYB(2)
ARRAYA(1,8)=ARRAYB(3) : Paste Bob 40,178,ARRAYB(3)
ARRAYA(12,8)=ARRAYB(4) : Paste Bob 260,178,ARRAYB(4)
ARRAYA(6,4)=ARRAYB(5) : Paste Bob 140,98,ARRAYB(5)
ARRAYA(7,5)=ARRAYB(6) : Paste Bob 160,118,ARRAYB(6)
'
LSCORE=0 : RSCORE=0
PSCORE
If PMODE=2 Then RMAN Else LMAN
'
'
'
'
COUNT=7 : ROT=4
Gosub PNEXTSTONES
NEK: If COMPLAY=1 and PLYER=-1 Then Goto AUT1
If Key State(69)=True Then Goto BEGGIN8
K=Mouse Key : If K=1 Then Goto CHECKSQ Else Goto NEK
CHECKSQ: X=X Mouse : Y=Y Mouse
XP=Int((X-132)/20) : YP=Int((Y-36)/20)
'
'
If YP=10 Then Goto AUT1
If XP<1 or XP>12 or YP<1 or YP>8 Then Goto NEK
AUT2: L=XP : M=YP
Gosub SCORER
If TEMPSCORE=0 Then Goto NEK
If ARRAYA(L,M)>0 Then Goto NEK
If L=1 or L=12 or M=1 or M=8 Then TEMPSCORE=0
'
XPX=XP*20+132 : YPY=YP*20+36
Amreg(0)=(XPX-412) : Amreg(1)=(YPY-56)
Bob 9,300,38,ARRAYB(COUNT)
Paste Bob 300,38,49 : Wait Vbl : Paste Bob 300,38,49
A$="M RA,RB,50"
Channel 9 To Bob 9
Amal 9,A$
Amal On 9
Wait 50 : Bob Off 9
Paste Bob XP*20+20,YP*20+18,ARRAYB(COUNT)
Amal Off 0
For V=1 To TEMPSCORE
Sam Play 1 : Wait 10
Next V
If PLYER=1 Then LSCORE=LSCORE+TEMPSCORE
If PLYER=-1 Then RSCORE=RSCORE+TEMPSCORE
PSCORE
If COUNT=72 Then Goto BEGGEND
ARRAYA(L,M)=ARRAYB(COUNT)
Inc COUNT
If PMODE=3 or PMODE=4 Then PLYER=PLYER*-1
If PMODE>4 and ROT=4 Then PLYER=PLYER*-1
If ROT=4 Then ROT=0
Inc ROT
Gosub PNEXTSTONES
If PLYER=1 Then LMAN Else RMAN
Goto NEK
'
BEGGEND: Music 1
If Mouse Key=0 Then Goto BEGGEND
Goto BEGGIN2
'
'
BEGGIN8: Wait 50 : Music 1 : Goto BEGGIN2
'
'
AUT1: DI1=0
If Key State(69)=True Then Goto BEGGIN8
For Q=1 To 12
For R=1 To 8
If N(Q,R)>DI1 or(N(Q,R)=DI1 and Rnd(10)>7.8)
XP=Q : YP=R
DI1=N(Q,R)
End If
Next R
Next Q
Goto AUT2
'
'
'
Procedure LMAN
Bob 3,X Mouse,Y Mouse,47
C$="Loop: L X=XM-112 L Y=YM-18 Pause J Loop"
Channel 3 To Bob 3
Amal 3,C$
Amal On
End Proc
'
'
Procedure RMAN
Bob 3,X Mouse,Y Mouse,48
C$="Loop: L X=XM-112 L Y=YM-18 Pause J Loop"
Channel 3 To Bob 3
Amal 3,C$
Amal On
End Proc
'
'
Procedure PSCORE
Shared LSCORE,RSCORE
PS1=Int(LSCORE/100) : PSS=PS1*100 : PS2=Int((LSCORE-PSS)/10)
PST=PS2*10 : PS3=LSCORE-PSS-PST
Paste Bob 40,218,37+PS1
Paste Bob 60,218,37+PS2
Paste Bob 80,218,37+PS3
PS1=Int(RSCORE/100) : PSS=PS1*100 : PS2=Int((RSCORE-PSS)/10)
PST=PS2*10 : PS3=RSCORE-PSS-PST
Paste Bob 219,218,37+PS1
Paste Bob 239,218,37+PS2
Paste Bob 259,218,37+PS3
End Proc
'
'
PNEXTSTONES:
LLL=0 : SCORENO=0
LBL5: For L=1 To 12
For M=1 To 8
N(L,M)=0
If ARRAYA(L,M)=0 Then Gosub SCORER
If ARRAYA(L,M)=0 and L>1 and L<12 and M>1 and M<8 Then TEMPSCORE=TEMPSCORE*8
If ARRAYA(L,M)=0 Then SCORENO=SCORENO+TEMPSCORE
If ARRAYA(L,M)=0 Then N(L,M)=TEMPSCORE
Next M
Next L
If LLL=73 Then Goto BEGGEND
If SCORENO>0 Then Goto SHUF
Gosub SHUFFLE
LLL=LLL+1
Goto LBL5
SHUF:
For EGXI=1 To 20 : Scroll 1 : Next EGXI
Screen Copy 0,298,56,317,57 To 0,298,176 : Wait Vbl
Screen Copy 0,298,56,317,57 To 0,298,176
For A=COUNT To COUNT+7
If A>72 Then Goto BBACK
Paste Bob 300,(A-COUNT)*20+38,ARRAYB(A)
Goto CBACK
BBACK: Paste Bob 300,(A-COUNT)*20+38,49
CBACK: Next A
Return
'
'
'
SCORER: TEMPSCORE=0
J=ARRAYB(COUNT)
If M=1 Then Goto LBL1
K=ARRAYA(L,M-1)
Gosub SCOREMATCH
'
LBL1: If M=8 Then Goto LBL2
K=ARRAYA(L,M+1)
Gosub SCOREMATCH
'
LBL2: If L=1 Then Goto LBL3
K=ARRAYA(L-1,M)
Gosub SCOREMATCH
'
LBL3: If L=12 Then Goto LBL4
K=ARRAYA(L+1,M)
Gosub SCOREMATCH
'
LBL4: If TEMPSCORE=0 Then Return
TEMPSCORE=(2^TEMPSCORE)/2
'
Return
'
'
SCOREMATCH: If K=0 Then Return
Dec J : Dec K : JJJ=Int(J/6) : KKK=Int(K/6)
If JJJ=KKK Then Inc TEMPSCORE
JJ=JJJ*6 : KK=KKK*6 : KKKK=K-KK+JJ
If J=KKKK Then Inc TEMPSCORE
If J=K Then Dec TEMPSCORE
Inc J
Return
'
'
'
SHUFFLE:
For EGXI=1 To 20 : Scroll 1 : Next EGXI
Screen Copy 0,298,56,317,57 To 0,298,176 : Wait Vbl
Screen Copy 0,298,56,317,57 To 0,298,176
GG=ARRAYB(COUNT)
For HH=COUNT To 71
ARRAYB(HH)=ARRAYB(HH+1)
Next HH
ARRAYB(72)=GG
Inc LLL
A=COUNT+7
If A>72 Then Goto BBACC
Paste Bob 300,(A-COUNT)*20+38,ARRAYB(A)
Goto CBACC
BBACC: Paste Bob 299,(A-COUNT)*20+38,49
CBACC: Return
'
'
'
JERSEY: For A=COUNT To COUNT+7
If A>72 Then Goto BBACD
Paste Bob 300,(A-COUNT)*20+38,ARRAYB(A)
Goto CBACD
BBACD: Paste Bob 299,(A-COUNT)*20+38,37
CBACD: Next A
Return